home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / CC_C / 1116.ZIP / TOOLKIT.ARC / _FILES.H < prev    next >
Text File  |  1979-12-31  |  8KB  |  188 lines

  1.  
  2. /* _FILES.H  written by Wayne Pearson for Small C:PC
  3.    hexprint() writes a new file, with extension .HEX, that contains the
  4.               hexadecimal ASCII code values of the file to hexprint.
  5.    fprintf() writes numbers in readable, multiple-digit form to ASCII files.
  6.              Also, fprintf() writes strings to file.  Embedded line feeds
  7.              are allowed in these strings.
  8.  
  9.    Valid function calls:
  10.    hexprint(myfile);       creates new *.HEX file hexprint dump of myfile
  11.    hexprint("a:data.dat"); creates A:DATA.HEX as the hexprint dump
  12.    fprintf("%d",65,fptr);  writes the decimal integer 65 to file
  13.    fprintf("%h",65,fptr);  writes the hexadecimal integer 41 to file
  14.    fprintf("%o",65,fptr);  writes the octal integer 101 to file
  15.    fprintf("%b",65,fptr);  writes the binary integer 1000001 to file
  16.    fprintf("\nHello\n\nworld\n",0,fptr);
  17.                            writes string with embedded line feeds to file
  18. */
  19.  
  20. hexprint(ha_name)
  21.                   char ha_name[];
  22.         {
  23.           int hexf_16,hexf_1,*ha_ptr,*hf_ptr,ha_pos,ln_cntr,chk_lcv;
  24.           char hf_name[14],mn_chr,hpf_2h,hf_chr16[255],hf_chr_1[255];
  25.           ha_ptr = fopen(ha_name,"r"); /* one file open at a time */
  26.           ha_pos = ln_cntr = chk_lcv = 0; hpf_2h = 32; mn_chr = 'a';
  27.           while(mn_chr != 0) { mn_chr = ha_name[ln_cntr]; ++ln_cntr; }
  28.                 while((chk_lcv <= ln_cntr)&(ha_pos ==0))
  29.                         {
  30.                           mn_chr = ha_name[chk_lcv]; ++chk_lcv;
  31.                           if(mn_chr == '.') ha_pos = chk_lcv;
  32.                         }
  33.           if(ha_pos > 0)
  34.                         {
  35.                           chk_lcv = 1;
  36.                           while(chk_lcv <= ha_pos)
  37.                                 {
  38.                                   hf_name[chk_lcv - 1] = ha_name[chk_lcv - 1];
  39.                                   ++chk_lcv;
  40.                                 }
  41.                           hf_name[chk_lcv - 1] = 'H'; ++chk_lcv;
  42.                           hf_name[chk_lcv - 1] = 'E'; ++chk_lcv;
  43.                           hf_name[chk_lcv - 1] = 'X'; ++chk_lcv;
  44.                           hf_name[chk_lcv - 1] = 0;             /* ASCIIZ */
  45.                         }
  46.                     else
  47.                         {
  48.                           chk_lcv = 1;
  49.                           while(chk_lcv < ln_cntr)
  50.                                 {
  51.                                   hf_name[chk_lcv - 1] = ha_name[chk_lcv - 1];
  52.                                   ++chk_lcv;
  53.                                 }
  54.                           hf_name[chk_lcv - 1] = '.'; ++chk_lcv;
  55.                           hf_name[chk_lcv - 1] = 'H'; ++chk_lcv;
  56.                           hf_name[chk_lcv - 1] = 'E'; ++chk_lcv;
  57.                           hf_name[chk_lcv - 1] = 'X'; ++chk_lcv;
  58.                           hf_name[chk_lcv - 1] = 0;             /* ASCIIZ */
  59.                         }
  60.           chk_lcv = 0; hpf_2h = 1;
  61.           while((hpf_2h != 0)&(chk_lcv < 255))
  62.                  {
  63.                    hpf_2h = getc(ha_ptr);
  64.                    if(hpf_2h >= 16)
  65.                             {
  66.                               hexf_16 = hpf_2h / 16;
  67.                               hexf_1 = hpf_2h - hexf_16 * 16;
  68.                               if(((hexf_16 * 16) % 16) >= 8) --hexf_1;
  69.                             }
  70.                        else { hexf_16 = 0; hexf_1 = hpf_2h; }
  71.                    if(hexf_16 > 9) hexf_16 = hexf_16 + 7;
  72.                    if(hexf_1 > 9) hexf_1 = hexf_1 + 7;
  73.                    hexf_16 = hexf_16 + 48; hexf_1 = hexf_1 + 48;
  74.                    hf_chr16[chk_lcv] = hexf_16;
  75.                    hf_chr_1[chk_lcv] = hexf_1;  ++chk_lcv;
  76.                  }
  77.             fclose(ha_ptr);
  78.             hf_ptr = fopen(hf_name,"w");
  79.             ln_cntr = 0; hexf_1 = 1;
  80.             while(ln_cntr < chk_lcv)
  81.                   {
  82.                     hpf_2h = hf_chr16[ln_cntr]; putc(hpf_2h,hf_ptr);
  83.                     hpf_2h = hf_chr_1[ln_cntr]; putc(hpf_2h,hf_ptr);
  84.                     putc(32,hf_ptr);
  85.                     hexf_16 = hf_chr16[ln_cntr];
  86.                     if(((hexf_16 == '0')&(hpf_2h == 'D'))|((hexf_1 % 25) ==0))
  87.                          { putc(13,hf_ptr); hexf_1 = 1; }
  88.                     ++ln_cntr; ++hexf_1;
  89.                   }
  90.              fclose(hf_ptr);
  91.          }
  92.  
  93. fprintf(ff_1,ff_2d,f_p)
  94.                    char ff_1[];  int ff_2d,*f_p;
  95.            {
  96.                   if((ff_1[0] == '%')&(ff_1[1] == 'd')) f_dec(10,ff_2d,f_p);
  97.              else if((ff_1[0] == '%')&(ff_1[1] == 'h')) f_hex(ff_2d,f_p);
  98.              else if((ff_1[0] == '%')&(ff_1[1] == 'o')) f_dec(8,ff_2d,f_p);
  99.              else if((ff_1[0] == '%')&(ff_1[1] == 'b')) f_bin(ff_2d,f_p);
  100.              else f_str(ff_1,f_p);
  101.            }
  102.  
  103. f_dec(fase_n,ff_2,f_pd)
  104.                        int fase_n, ff_2, *f_pd;
  105.      {
  106.        int fec_100, fec_10, fec_1, fase_nn;
  107.        fase_nn = fase_n * fase_n;
  108.        if(ff_2 >= fase_nn) fec_100 = ff_2 / fase_nn; else fec_100 = 0;
  109.        if(ff_2 >= fase_n)
  110.                           {
  111.                             fec_10 = ff_2 - fec_100 * fase_nn;
  112.                             fec_10 = fec_10 / fase_n;
  113.                           }
  114.                       else fec_10 = 0;
  115.        if(ff_2 >= fase_nn)
  116.               {
  117.                 fec_1 = ff_2 - fec_100 * fase_nn - fec_10 * fase_n;
  118.                 if(((fec_100 * fase_nn) % fase_nn) >= (fase_nn/2 -1))--fec_1;
  119.                 if(((fec_10 * fase_n) % fase_n) >= (fase_n / 2 - 1 ))--fec_1;
  120.               }
  121.        if((ff_2 < fase_nn)&(ff_2 >= fase_n))
  122.               {
  123.                 fec_1 = ff_2 -fec_10 * fase_n;
  124.                 if(((fec_10 * fase_n) % fase_n) >= (fase_n / 2 - 1 ))--fec_1;
  125.               }
  126.        if(ff_2 < fase_n) fec_1 = ff_2;
  127.        fec_100 = fec_100 + 48; fec_10 = fec_10 + 48;  fec_1 = fec_1 + 48;
  128.        if(fec_100 > 48) putc(fec_100,f_pd);
  129.        if(((fec_100 > 48)&(fec_10 >= 48))|(fec_10 > 48)) putc(fec_10,f_pd);
  130.        putc(fec_1,f_pd);
  131.      }
  132.  
  133. f_hex(ff_2h,f_ph)
  134.                 int ff_2h,*f_ph;
  135.         {
  136.           int fex_16, fex_1;
  137.           if(ff_2h >= 16)
  138.                          {
  139.                            fex_16 = ff_2h / 16; fex_1 = ff_2h - fex_16 * 16;
  140.                            if(((fex_16 * 16) % 16) >= 8) --fex_1;
  141.                          }
  142.                     else { fex_16 = 0; fex_1 = ff_2h; }
  143.           if(fex_16 > 9) fex_16 = fex_16 + 7;
  144.           if(fex_1 > 9) fex_1 = fex_1 + 7;
  145.           fex_16 = fex_16 + 48; fex_1 = fex_1 + 48;
  146.           if(fex_16 > 48) putc(fex_16,f_ph);  putc(fex_1,f_ph);
  147.         }
  148.  
  149. f_bin(f_2,f_pb)
  150.                int f_2,*f_pb;
  151.           {
  152.             int fin_8,fin_7,fin_6,fin_5,fin_4,fin_3,fin_2,fin_1,fin_mod;
  153.             fin_8 =fin_7 =fin_6 =fin_5 =fin_4 =fin_3 =fin_2 =fin_1 =0;
  154.             fin_mod = f_2 / 128;  if(fin_mod > 0) fin_8 = 1;
  155.             fin_mod = f_2 / 64; fin_mod = fin_mod % 2;
  156.             if(fin_mod > 0) fin_7 = 1;
  157.             fin_mod = f_2 / 32; fin_mod = fin_mod % 2;
  158.             if(fin_mod > 0) fin_6 = 1;
  159.             fin_mod = f_2 / 16; fin_mod = fin_mod % 2;
  160.             if(fin_mod > 0) fin_5 = 1;
  161.             fin_mod = f_2 / 8; fin_mod = fin_mod % 2;
  162.             if(fin_mod > 0) fin_4 = 1;
  163.             fin_mod = f_2 / 4; fin_mod = fin_mod % 2;
  164.             if(fin_mod > 0) fin_3 = 1;
  165.             fin_mod = f_2 / 2; fin_mod = fin_mod % 2;
  166.             if(fin_mod > 0) fin_2 = 1;
  167.             fin_mod = f_2 % 2; if(fin_mod > 0) fin_1 = 1;
  168.             if(f_2 > 255) fin_8 = 40;
  169.             putc(fin_8+48,f_pb); putc(fin_7+48,f_pb); putc(fin_6+48,f_pb);
  170.             putc(fin_5+48,f_pb); putc(fin_4+48,f_pb); putc(fin_3+48,f_pb);
  171.             putc(fin_2+48,f_pb); putc(fin_1+48,f_pb);
  172.           }
  173.  
  174. f_str(ftr_nm,f_ps)
  175.                  char ftr_nm[],*f_ps;
  176.           {
  177.             char fhr_str,ftr_end; int ftr_lcv; ftr_end='a'; ftr_lcv = 0;
  178.             while(ftr_end != 0)
  179.                   {
  180.                     ftr_end = ftr_nm[ftr_lcv];
  181.                       if(ftr_end == '\') {++ftr_lcv; putc(13,f_ps);}
  182.                     else {fhr_str = ftr_nm[ftr_lcv]; putc(fhr_str,f_ps);}
  183.                     ++ftr_lcv;
  184.                   }
  185.           }
  186.  
  187.  
  188.